package de.h_da.fbi.cg.pointcloud.ui.dialog;

import java.awt.BorderLayout;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.WindowConstants;

import org.anddev.progressmonitor.IProgressListener;

/**
 * @author Nicolas Gramlich
 * @since 18:20:40 - 25.10.2010
 */
public class ProgressDialog extends JDialog implements IProgressListener {
	// ===========================================================
	// Constants
	// ===========================================================

	private static final long serialVersionUID = 3725119997429319013L;

	// ===========================================================
	// Fields
	// ===========================================================

	private final JProgressBar mProgressBar;

	private final JLabel mLabel;

	// ===========================================================
	// Constructors
	// ===========================================================

	public ProgressDialog(final JFrame pParentFrame) {
		super(pParentFrame, "Progress Dialog", true);
		this.mProgressBar = new JProgressBar(0, 100);
		this.add(BorderLayout.CENTER, this.mProgressBar);
		this.mLabel = new JLabel("Progress...");
		this.add(BorderLayout.NORTH, this.mLabel);
		this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		this.setSize(300, 75);
		this.setLocationRelativeTo(pParentFrame);
	}

	// ===========================================================
	// Getter & Setter
	// ===========================================================

	public void setLabelText(final String pLabelText) {
		this.mLabel.setText(pLabelText);
	}

	// ===========================================================
	// Methods for/from SuperClass/Interfaces
	// ===========================================================

	@Override
	public void onProgressChanged(final int pProgress) {
		this.mProgressBar.setValue(pProgress);
		this.mProgressBar.repaint();
	}

	// ===========================================================
	// Methods
	// ===========================================================

	// ===========================================================
	// Inner and Anonymous Classes
	// ===========================================================
}
